home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / MPW_TOOL / TOOLS / TOOLS_WI / ICON_8 / ICONT_FO / OPTAB.C < prev    next >
C/C++ Source or Header  |  1990-03-02  |  13KB  |  366 lines

  1. #include "::h:config.h"
  2. #include "tlex.h"
  3.  
  4. /*
  5.  * State tables for operator recognition.
  6.  */
  7.  
  8. struct optab state0[] = {       /* initial state */
  9.    { ',', A_Immret, (char *) &toktab[ 58] },      /* ","     */
  10.    { '.', A_Immret, (char *) &toktab[ 62] },      /* "."     */
  11.    { '[', A_Immret, (char *) &toktab[ 69] },      /* "["     */
  12.    { ']', A_Immret, (char *) &toktab[ 98] },      /* "]"     */
  13.    { '(', A_Immret, (char *) &toktab[ 78] },      /* "("     */
  14.    { ')', A_Immret, (char *) &toktab[ 99] },      /* ")"     */
  15.    { ';', A_Immret, (char *) &toktab[100] },      /* ";"     */
  16.    { '{', A_Immret, (char *) &toktab[ 68] },      /* "{"     */
  17.    { '}', A_Immret, (char *) &toktab[ 97] },      /* "}"     */
  18.    { '!', A_Immret, (char *) &toktab[ 53] },      /* "!"     */
  19.    { '\\', A_Immret, (char *) &toktab[ 52] },      /* "\\"    */
  20.    { ':', A_Goto,   (char *) state1       },      /* ":" ... */
  21.    { '<', A_Goto,   (char *) state2       },      /* "<" ... */
  22.    { '>', A_Goto,   (char *) state4       },      /* ">" ... */
  23.    { '=', A_Goto,   (char *) state5       },      /* "=" ... */
  24.    { '|', A_Goto,   (char *) state3       },      /* "|" ... */
  25.    { '+', A_Goto,   (char *) state7       },      /* "+" ... */
  26.    { '-', A_Goto,   (char *) state8       },      /* "-" ... */
  27.    { '*', A_Goto,   (char *) state9       },      /* "*" ... */
  28.    { '^', A_Goto,   (char *) state6       },      /* "^" ... */
  29.    { '~', A_Goto,   (char *) state29      },      /* "~" ... */
  30.    { '/', A_Goto,   (char *) state21      },      /* "/" ... */
  31.    { '%', A_Goto,   (char *) state30      },      /* "%" ... */
  32.    { '?', A_Goto,   (char *) state36      },      /* "?" ... */
  33.    { '&', A_Goto,   (char *) state38      },      /* "&" ... */
  34.    { '@', A_Goto,   (char *) state40      },      /* "@" ... */
  35.    { '$', A_Goto,   (char *) state62      },      /* "$" ... */
  36.    { 0,   A_Error,  0            }
  37.    };
  38.  
  39. struct optab state1[] = {       /* ":" */
  40.    { '=', A_Goto,   (char *) state10      },      /* ":=" ... */
  41.    { 0,   A_Return, (char *) &toktab[ 57] }       /* ":"      */
  42.    };
  43.  
  44. struct optab state2[] = {       /* "<" */
  45.    { '-', A_Goto,   (char *) state11      },      /* "<-" ... */
  46.    { '<', A_Goto,   (char *) state32      },      /* "<<" ... */
  47.    { ':', A_Goto,   (char *) state46      },      /* "<:" ... */
  48.    { '=', A_Goto,   (char *) state56      },      /* "<=" ... */
  49.    { 0,   A_Return, (char *) &toktab[ 89] }       /* "<"      */
  50.    };
  51.  
  52. struct optab state3[] = {       /* "|" */
  53.    { '|', A_Goto,   (char *) state22      },      /* "||" ... */
  54.    { 0,   A_Return, (char *) &toktab[ 54] }       /* "|"      */
  55.    };
  56.  
  57. struct optab state4[] = {       /* ">" */
  58.    { '>', A_Goto,   (char *) state33      },      /* ">>" ... */
  59.    { ':', A_Goto,   (char *) state44      },      /* ">:" ... */
  60.    { '=', A_Goto,   (char *) state57      },      /* ">=" ... */
  61.    { 0,   A_Return, (char *) &toktab[ 87] }       /* ">"      */
  62.    };
  63.  
  64. struct optab state5[] = {        /* "=" */
  65.    { '=', A_Goto,   (char *) state12      },      /* "==" ... */
  66.    { ':', A_Goto,   (char *) state42      },      /* "=:" ... */
  67.    { 0,   A_Return, (char *) &toktab[ 85] }       /* "="      */
  68.    };
  69.  
  70. struct optab state6[] = {        /* "^" */
  71.    { ':', A_Goto,   (char *) state23      },      /* "^:" ... */
  72.    { 0,   A_Return, (char *) &toktab[ 55] }       /* "^"      */
  73.    };
  74.  
  75. struct optab state7[] = {       /* "+" */
  76.    { ':', A_Goto,   (char *) state15      },      /* "+:" ... */
  77.    { '+', A_Goto,   (char *) state16      },      /* "++" ... */
  78.    { 0,   A_Return, (char *) &toktab[ 92] }       /* "+"      */
  79.    };
  80.  
  81. struct optab state8[] = {        /* "-" */
  82.    { ':', A_Goto,   (char *) state17      },      /* "-:" ... */
  83.    { '-', A_Goto,   (char *) state18      },      /* "--" ... */
  84.    { 0,   A_Return, (char *) &toktab[ 80] }       /* "-"      */
  85.    };
  86.  
  87. struct optab state9[] = {        /* "*" */
  88.    { ':', A_Goto,   (char *) state19      },      /* "*:" ... */
  89.    { '*', A_Goto,   (char *) state20      },      /* "**" ... */
  90.    { 0,   A_Return, (char *) &toktab[104] }       /* "*"      */
  91.    };
  92.  
  93. struct optab state10[] = {       /* ":=" */
  94.    { ':', A_Immret, (char *) &toktab[106] },      /* ":=:" */
  95.    { 0,   A_Return, (char *) &toktab[ 34] }       /* ":="  */
  96.    };
  97.  
  98. struct optab state11[] = {       /* "<-" */
  99.    { '>', A_Immret, (char *) &toktab[ 96] },      /* "<->" */
  100.    { 0,   A_Return, (char *) &toktab[ 95] }       /* "<-"  */
  101.    };
  102.  
  103. struct optab state12[] = {       /* "==" */
  104.    { '=', A_Goto,   (char *) state61      },      /* "===" ... */
  105.    { ':', A_Goto,   (char *) state48      },      /* "==:" ... */
  106.    { 0,   A_Return, (char *) &toktab[ 72] }       /* "=="  */
  107.    };
  108.  
  109. struct optab state13[] = {       /* "~=" */
  110.    { '=', A_Goto,   (char *) state14      },      /* "~==" ... */
  111.    { ':', A_Goto,   (char *) state43      },      /* "~=:" ... */
  112.    { 0,   A_Return, (char *) &toktab[ 90] }       /* "~="      */
  113.    };
  114.  
  115. struct optab state14[] = {       /* "~==" */
  116.    { ':', A_Goto,   (char *) state49      },      /* "~==:" ... */
  117.    { '=', A_Goto,   (char *) state60      },      /* "~===" ... */
  118.    { 0,   A_Return, (char *) &toktab[ 77] }       /* "~=="  */
  119.    };
  120.  
  121. struct optab state15[] = {       /* "+:" */
  122.    { '=', A_Immret, (char *) &toktab[ 93] },      /* "+:=" */
  123.    { 0,   A_Return, (char *) &toktab[ 91] }       /* "+:"  */
  124.    };
  125.  
  126. struct optab state16[] = {       /* "++" */
  127.    { ':', A_Goto,   (char *) state24      },      /* "++:" ... */
  128.    { 0,   A_Return, (char *) &toktab[108] }       /* "++"      */
  129.    };
  130.  
  131. struct optab state17[] = {       /* "-:" */
  132.    { '=', A_Immret, (char *) &toktab[ 81] },      /* "-:=" */
  133.    { 0,   A_Return, (char *) &toktab[ 79] }       /* "-:"  */
  134.    };
  135.  
  136. struct optab state18[] = {       /* "--" */
  137.    { ':', A_Goto,   (char *) state25      },      /* "--:" ... */
  138.    { 0,   A_Return, (char *) &toktab[ 63] }       /* "--" */
  139.    };
  140.  
  141. struct optab state19[] = {      /* "*:" */
  142.    { '=', A_Immret, (char *) &toktab[105] },      /* "*:=" */
  143.    { 0,   A_Error,  0            }
  144.    };
  145.  
  146. struct optab state20[] = {       /* "**" */
  147.    { ':', A_Goto,   (char *) state26      },      /* "**:" ... */
  148.    { 0,   A_Return, (char *) &toktab[ 66] }       /* "**"      */
  149.    };
  150.  
  151. struct optab state21[] = {       /* "/" */
  152.    { ':', A_Goto,   (char *) state27      },      /* "/:" ... */
  153.    { 0,   A_Return, (char *) &toktab[102] }       /* "/"      */
  154.    };
  155.  
  156. struct optab state22[] = {       /* "||" */
  157.    { ':', A_Goto,   (char *) state28      },      /* "||:" ... */
  158.    { '|', A_Goto,   (char *) state34      },      /* "|||" ... */
  159.    { 0,   A_Return, (char *) &toktab[ 59] }       /* "||"      */
  160.    };
  161.  
  162. struct optab state23[] = {       /* "^:" */
  163.    { '=', A_Immret, (char *) &toktab[ 56] },      /* "^:=" */
  164.    { 0,   A_Error,  0            }
  165.    };
  166.  
  167. struct optab state24[] = {       /* "++:" */
  168.    { '=', A_Immret, (char *) &toktab[109] },      /* "++:=" */
  169.    { 0,   A_Error,  0            }
  170.    };
  171.  
  172. struct optab state25[] = {       /* "--:" */
  173.    { '=', A_Immret, (char *) &toktab[ 64] },      /* "--:=" */
  174.    { 0,   A_Error,  0            }
  175.    };
  176.  
  177. struct optab state26[] = {       /* "**:" */
  178.    { '=', A_Immret, (char *) &toktab[ 67] },      /* "**:=" */
  179.    { 0,   A_Error,  0            }
  180.    };
  181.  
  182. struct optab state27[] = {       /* "/:" */
  183.    { '=', A_Immret, (char *) &toktab[103] },      /* "/:=" */
  184.    { 0,   A_Error,  0            }
  185.    };
  186.  
  187. struct optab state28[] = {      /* "||:" */
  188.    { '=', A_Immret, (char *) &toktab[ 60] },      /* "||:=" */
  189.    { 0,   A_Error,  0            }
  190.    };
  191.  
  192. struct optab state29[] = {       /* "~" */
  193.    { '=', A_Goto,   (char *) state13      },      /* "~=" ... */
  194.    { 0,   A_Return, (char *) &toktab[107] }       /* "~"      */
  195.    };
  196.  
  197. struct optab state30[] = {       /* "%" */
  198.    { ':', A_Goto,   (char *) state31      },      /* "%:" ... */
  199.    { 0,   A_Return, (char *) &toktab[ 82] }       /* "%"      */
  200.    };
  201.  
  202. struct optab state31[] = {       /* "%:" */
  203.    { '=', A_Immret, (char *) &toktab[ 83] },      /* "%:=" */
  204.    { 0,   A_Error,  0            }
  205.    };
  206.  
  207. struct optab state32[] = {       /* "<<" */
  208.    { ':', A_Goto,   (char *) state52      },      /* "<<:" ... */
  209.    { '=', A_Goto,   (char *) state58      },      /* "<<=" ... */
  210.    { 0,   A_Return, (char *) &toktab[ 76] }       /* "<<"     */
  211.    };
  212.  
  213. struct optab state33[] = {       /* ">>" */
  214.    { ':', A_Goto,   (char *) state50      },      /* ">>:" ... */
  215.    { '=', A_Goto,   (char *) state59      },      /* ">>=" ... */
  216.    { 0,   A_Return, (char *) &toktab[ 74] }       /* ">>"     */
  217.    };
  218.  
  219. struct optab state34[] = {       /* "|||" */
  220.    { ':', A_Goto,   (char *) state35      },      /* "|||:" ... */
  221.    { 0,   A_Return, (char *) &toktab[ 70] }       /* "|||"      */
  222.    };
  223.  
  224. struct optab state35[] = {       /* "|||:" */
  225.    { '=', A_Immret, (char *) &toktab[ 71] },      /* "|||:=" */
  226.    { 0,   A_Error,  0            }
  227.    };
  228.  
  229. struct optab state36[] = {        /* "?" */
  230.    { ':', A_Goto,   (char *) state37      },      /* "?:" ... */
  231.    { 0,   A_Return, (char *) &toktab[ 94] }       /* "?"      */
  232.    };
  233.  
  234. struct optab state37[] = {       /* "?:" */
  235.    { '=', A_Immret, (char *) &toktab[101] },      /* "?:=" */
  236.    { 0,   A_Error,  0            }
  237.    };
  238.  
  239. struct optab state38[] = {        /* "&" */
  240.    { ':', A_Goto,   (char *) state39      },      /* "&:" ... */
  241.    { 0,   A_Return, (char *) &toktab[ 61] }       /* "&"      */
  242.    };
  243.  
  244. struct optab state39[] = {       /* "&:" */
  245.    { '=', A_Immret, (char *) &toktab[ 37] },      /* "&:=" */
  246.    { 0,   A_Error,  0            }
  247.    };
  248.  
  249. struct optab state40[] = {        /* "@" */
  250.    { ':', A_Goto,   (char *) state41      },      /* "@:" ... */
  251.    { 0,   A_Return, (char *) &toktab[ 35] }       /* "@"      */
  252.    };
  253.  
  254. struct optab state41[] = {      /* "@:" */
  255.    { '=', A_Immret, (char *) &toktab[ 36] },      /* "@:=" */
  256.    { 0,   A_Error,  0            }
  257.    };
  258.  
  259. struct optab state42[] = {       /* "=:" */
  260.    { '=', A_Immret, (char *) &toktab[ 38] },      /* "=:=" */
  261.    { 0,   A_Error,  0            }
  262.    };
  263.  
  264. struct optab state43[] = {       /* "~=:" */
  265.    { '=', A_Immret, (char *) &toktab[ 44] },      /* "~=:=" */
  266.    { 0,   A_Error,  0            }
  267.    };
  268.  
  269. struct optab state44[] = {       /* ">:" */
  270.    { '=', A_Immret, (char *) &toktab[ 41] },      /* ">:=" */
  271.    { 0,   A_Error,  0            }
  272.    };
  273.  
  274. struct optab state45[] = {       /* ">=:" */
  275.    { '=', A_Immret, (char *) &toktab[ 40] },      /* ">=:=" */
  276.    { 0,   A_Error,  0            }
  277.    };
  278.  
  279. struct optab state46[] = {      /* "<:" */
  280.    { '=', A_Immret, (char *) &toktab[ 43] },      /* "<:=" */
  281.    { 0,   A_Error,  0            }
  282.    };
  283.  
  284. struct optab state47[] = {       /* "<=:" */
  285.    { '=', A_Immret, (char *) &toktab[ 42] },      /* "<=:=" */
  286.    { 0,   A_Error,  0            }
  287.    };
  288.  
  289. struct optab state48[] = {       /* "==:" */
  290.    { '=', A_Immret, (char *) &toktab[ 46] },      /* "==:=" */
  291.    { 0,   A_Error,  0            }
  292.    };
  293.  
  294. struct optab state49[] = {       /* "~==:" */
  295.    { '=', A_Immret, (char *) &toktab[ 51] },      /* "~==:=" */
  296.    { 0,   A_Error,  0            }
  297.    };
  298.  
  299. struct optab state50[] = {      /* ">>:" */
  300.    { '=', A_Immret, (char *) &toktab[ 48] },      /* ">>:=" */
  301.    { 0,   A_Error,  0            }
  302.    };
  303.  
  304. struct optab state51[] = {       /* ">>=:" */
  305.    { '=', A_Immret, (char *) &toktab[ 47] },      /* ">>=:=" */
  306.    { 0,   A_Error,  0            }
  307.    };
  308.  
  309. struct optab state52[] = {       /* "<<:" */
  310.    { '=', A_Immret, (char *) &toktab[ 50] },      /* "<<:=" */
  311.    { 0,   A_Error,  0            }
  312.    };
  313.  
  314. struct optab state53[] = {       /* "<<=:" */
  315.    { '=', A_Immret, (char *) &toktab[ 49] },      /* "<<=:=" */
  316.    { 0,   A_Error,  0            }
  317.    };
  318.  
  319. struct optab state54[] = {      /* "===:" */
  320.    { '=', A_Immret, (char *) &toktab[ 39] },      /* "===:=" */
  321.    { 0,   A_Error,  0            }
  322.    };
  323.  
  324. struct optab state55[] = {       /* "~===:" */
  325.    { '=', A_Immret, (char *) &toktab[ 45] },      /* "~===:=" */
  326.    { 0,   A_Error,  0            }
  327.    };
  328.  
  329. struct optab state56[] = {        /* "<=" */
  330.    { ':', A_Goto,   (char *) state47      },      /* "<=:" ... */
  331.    { 0,   A_Return, (char *) &toktab[ 88] }       /* "<="      */
  332.    };
  333.  
  334. struct optab state57[] = {        /* ">=" */
  335.    { ':', A_Goto,   (char *) state45      },      /* ">=:" ... */
  336.    { 0,   A_Return, (char *) &toktab[ 86] }       /* ">="      */
  337.    };
  338.  
  339. struct optab state58[] = {        /* "<<=" */
  340.    { ':', A_Goto,   (char *) state53      },      /* "<<=:" ... */
  341.    { 0,   A_Return, (char *) &toktab[ 75] }       /* "<<="      */
  342.    };
  343.  
  344. struct optab state59[] = {       /* ">>=" */
  345.    { ':', A_Goto,   (char *) state51     },      /* ">>=:" ... */
  346.    { 0,   A_Return, (char *) &toktab[ 73] }       /* ">>="      */
  347.    };
  348.  
  349. struct optab state60[] = {        /* "~===" */
  350.    { ':', A_Goto,   (char *) state55      },      /* "~===:" ... */
  351.    { 0,   A_Return, (char *) &toktab[ 84] }       /* "~==="      */
  352.    };
  353.  
  354. struct optab state61[] = {        /* "===" */
  355.    { ':', A_Goto,   (char *) state54      },      /* "===:" ... */
  356.    { 0,   A_Return, (char *) &toktab[ 65] }       /* "==="      */
  357.    };
  358.  
  359. struct optab state62[] = {        /* "$" */
  360.    { '(', A_Immret,   (char *) &toktab[110] },      /* "$(" */
  361.    { ')', A_Immret,   (char *) &toktab[111] },      /* "$)" */
  362.    { '<', A_Immret,   (char *) &toktab[112] },      /* "$<" */
  363.    { '>', A_Immret,   (char *) &toktab[113] },      /* "$>" */
  364.    { 0,   A_Error,  0            }
  365.    };
  366.